package be.kdg.bombermanunlimited.server.audiomanager;

import java.rmi.RemoteException;

import be.kdg.bombermanunlimited.audio.rmi.IAudioListener;
import be.kdg.bombermanunlimited.server.network.Node;

public interface IAudioManager extends java.rmi.Remote {
	/**
	 * Deze interface maakt het mogelijk voor de nodes op het netwerk om contact
	 * op te nemen met de audiomanager op de centrale server. Ze kunnen aangeven
	 * dat ze gestopt zijn met streamen, zich toevoegen of verwijderen als
	 * listener, aangeven dat ze in staat zijn tot het starten van streams,
	 * navragen of ze toestemming hebben tot streamen en hun rol als server
	 * weigeren.
	 * 
	 * @author Siegfried
	 */

	public void endOfFile(String ip, int port) throws java.rmi.RemoteException;

	public void addAudioListener(String ip, int port, boolean serverEnabled,
			IAudioListener listener) throws java.rmi.RemoteException;

	public void removeAudioListener(Node node) throws java.rmi.RemoteException;

	public void enableServer(boolean b, String ip, int port)
			throws java.rmi.RemoteException;

	public boolean requestToTransmit(String ip, int port, String username)
			throws RemoteException;

	public void declineServerRole() throws RemoteException;
}
